using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("BnetGameAccount")]
	public class BnetGameAccount : MonoClass
	{
		public BnetBattleTag m_battleTag => method_3<BnetBattleTag>("m_battleTag");

		public bool m_away => method_2<bool>("m_away");

		public long m_awayTimeMicrosec => method_2<long>("m_awayTimeMicrosec");

		public bool m_busy => method_2<bool>("m_busy");

		public bool m_online => method_2<bool>("m_online");

		public bool m_appearingOffline => method_2<bool>("m_appearingOffline");

		public long m_lastOnlineMicrosec => method_2<long>("m_lastOnlineMicrosec");

		public string m_richPresence => method_4("m_richPresence");

		public string FullPresenceSummary => method_13("get_FullPresenceSummary");

		public BnetGameAccount(IntPtr address, string className)
			: base(address, className)
		{
		}

		public BnetGameAccount(IntPtr address)
			: this(address, "BnetGameAccount")
		{
		}

		public static bool op_Equality(BnetGameAccount a, BnetGameAccount b)
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "BnetGameAccount", "op_Equality", new object[2] { a, b });
		}

		public static bool op_Inequality(BnetGameAccount a, BnetGameAccount b)
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "BnetGameAccount", "op_Inequality", new object[2] { a, b });
		}

		public BnetGameAccount Clone()
		{
			return method_14<BnetGameAccount>("Clone", Array.Empty<object>());
		}

		public BnetBattleTag GetBattleTag()
		{
			return method_14<BnetBattleTag>("GetBattleTag", Array.Empty<object>());
		}

		public void SetBattleTag(BnetBattleTag battleTag)
		{
			method_8("SetBattleTag", battleTag);
		}

		public bool IsAway()
		{
			return method_11<bool>("IsAway", Array.Empty<object>());
		}

		public void SetAway(bool away)
		{
			method_8("SetAway", away);
		}

		public long GetAwayTimeMicrosec()
		{
			return method_11<long>("GetAwayTimeMicrosec", Array.Empty<object>());
		}

		public void SetAwayTimeMicrosec(long awayTimeMicrosec)
		{
			method_8("SetAwayTimeMicrosec", awayTimeMicrosec);
		}

		public bool IsBusy()
		{
			return method_11<bool>("IsBusy", Array.Empty<object>());
		}

		public void SetBusy(bool busy)
		{
			method_8("SetBusy", busy);
		}

		public bool IsOnline()
		{
			return method_11<bool>("IsOnline", Array.Empty<object>());
		}

		public void SetOnline(bool online)
		{
			method_8("SetOnline", online);
		}

		public bool IsAppearingOffline()
		{
			return method_11<bool>("IsAppearingOffline", Array.Empty<object>());
		}

		public void SetAppearingOffline(bool appearingOffline)
		{
			method_8("SetAppearingOffline", appearingOffline);
		}

		public long GetLastOnlineMicrosec()
		{
			return method_11<long>("GetLastOnlineMicrosec", Array.Empty<object>());
		}

		public void SetLastOnlineMicrosec(long microsec)
		{
			method_8("SetLastOnlineMicrosec", microsec);
		}

		public string GetRichPresence()
		{
			return method_13("GetRichPresence");
		}

		public void SetRichPresence(string richPresence)
		{
			method_8("SetRichPresence", richPresence);
		}

		public bool HasGameField(uint fieldId)
		{
			return method_11<bool>("HasGameField", new object[1] { fieldId });
		}

		public void SetGameField(uint fieldId, object val)
		{
			method_8("SetGameField", fieldId, val);
		}

		public bool RemoveGameField(uint fieldId)
		{
			return method_11<bool>("RemoveGameField", new object[1] { fieldId });
		}

		public object GetGameField(uint fieldId)
		{
			return method_14<object>("GetGameField", new object[1] { fieldId });
		}

		public bool GetGameFieldBool(uint fieldId)
		{
			return method_11<bool>("GetGameFieldBool", new object[1] { fieldId });
		}

		public int GetGameFieldInt(uint fieldId)
		{
			return method_11<int>("GetGameFieldInt", new object[1] { fieldId });
		}

		public string GetGameFieldString(uint fieldId)
		{
			return method_13("GetGameFieldString", fieldId);
		}

		public List<byte> GetGameFieldBytes(uint fieldId)
		{
			return method_14<Class250<byte>>("GetGameFieldBytes", new object[1] { fieldId })?.method_25();
		}

		public bool CanBeInvitedToGame()
		{
			return method_11<bool>("CanBeInvitedToGame", Array.Empty<object>());
		}

		public string GetClientVersion()
		{
			return method_13("GetClientVersion");
		}

		public string GetClientEnv()
		{
			return method_13("GetClientEnv");
		}

		public string GetDebugString()
		{
			return method_13("GetDebugString");
		}

		public string GetCardsOpened()
		{
			return method_13("GetCardsOpened");
		}

		public int GetDruidLevel()
		{
			return method_11<int>("GetDruidLevel", Array.Empty<object>());
		}

		public int GetHunterLevel()
		{
			return method_11<int>("GetHunterLevel", Array.Empty<object>());
		}

		public int GetMageLevel()
		{
			return method_11<int>("GetMageLevel", Array.Empty<object>());
		}

		public int GetPaladinLevel()
		{
			return method_11<int>("GetPaladinLevel", Array.Empty<object>());
		}

		public int GetPriestLevel()
		{
			return method_11<int>("GetPriestLevel", Array.Empty<object>());
		}

		public int GetRogueLevel()
		{
			return method_11<int>("GetRogueLevel", Array.Empty<object>());
		}

		public int GetShamanLevel()
		{
			return method_11<int>("GetShamanLevel", Array.Empty<object>());
		}

		public int GetWarlockLevel()
		{
			return method_11<int>("GetWarlockLevel", Array.Empty<object>());
		}

		public int GetWarriorLevel()
		{
			return method_11<int>("GetWarriorLevel", Array.Empty<object>());
		}

		public int GetGainMedal()
		{
			return method_11<int>("GetGainMedal", Array.Empty<object>());
		}

		public int GetTutorialBeaten()
		{
			return method_11<int>("GetTutorialBeaten", Array.Empty<object>());
		}

		public int GetCollectionEvent()
		{
			return method_11<int>("GetCollectionEvent", Array.Empty<object>());
		}

		public new bool Equals(object obj)
		{
			return method_10<bool>("Equals", new Class276.Enum20[1] { Class276.Enum20.Class }, new object[1] { obj });
		}

		public new int GetHashCode()
		{
			return method_11<int>("GetHashCode", Array.Empty<object>());
		}

		public new string ToString()
		{
			return method_13("ToString");
		}
	}
}
